package com.google.android.location.content.maps.predict.colors;

import java.util.List;

import com.google.android.location.content.mymaps.MyMapPredictionOverlay.CachedPredictLocation;
import com.google.android.location.content.mymaps.MyRouteMapOverlay;
import com.google.android.location.content.mymaps.MyRouteMapOverlay.CachedLocation;
import com.google.android.maps.Projection;

import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.Rect;




/**
 * An interface for classes which paint the route path. 
 *
 * @author Andrei.
 */
public interface RoutePredictPathPainter {
	
  /**
   * Clears the related data.
   */
  void clear();
  
  /**
   * Draws the path to the canvas.
   * @param canvas The Canvas to draw upon
   */
  void drawRoute(Canvas canvas);
  /** Updates the path.
  * @param projection The Canvas to draw upon.
  * @param viewRect The Path to be drawn.   
  * @param startLocationIdx The start point from where update the path.
  * @param alwaysVisible Flag for always visible.
  * @param points The list of points used to update the path.
  */
 void updatePredictPath(Projection projection, Rect viewRect, int startLocationIdx,
     Boolean alwaysVisible, List<CachedPredictLocation> points);
  /**
   * Updates the path.
   * @param projection The Canvas to draw upon.
   * @param viewRect The Path to be drawn.   
   * @param startLocationIdx The start point from where update the path.
   * @param alwaysVisible Flag for alwaysvisible.
   * @param points The list of points used to update the path.
   */
  void updatePath(Projection projection, Rect viewRect, int startLocationIdx,
      Boolean alwaysVisible, List<CachedLocation> points);
  
  /**
   * @return True if the path needs to be updated.
   */
  boolean needsRedraw();
  
  /**
   * @return The path being used currently.
   */
  Path getLastPath();
}